//
//  NSDate+Extension.swift
//  weibo
//
//  Created by Limonwei on 15/12/12.
//  Copyright © 2015年 heima. All rights reserved.
//

//抽象时间出来

/**
如果今年:
    是否是今天:
      是否在1分钟之内:
          刚刚
      是否在1小时之内:
          xx分钟前
      其他:
          xx小时前
    是否是昨天:
       昨天 10:10
       其他:
           10-11 18:18
如果不是今年:
    2014-10-11 19:19
*/

import Foundation

extension NSDate {
    
    //创建时间字符串返回其对应的NSDate
    class func sinaDate(creatStr: String) -> NSDate? {
        let dt = NSDateFormatter()
        
        //指定格式
        dt.dateFormat = "EEE MMM dd HH:mm:ss z yyyy"
        
        //指定本地化信息
        dt.locale = NSLocale(localeIdentifier: "en_US")
        
        //微博的创建时间
        let createDate = dt.dateFromString(creatStr)
        
        return createDate
    }
    
    //返回 微博时间的字符串
    var sinaDateString: String {
        
        let dt = NSDateFormatter()
        
        dt.locale = NSLocale(localeIdentifier: "en_US")
        
        let calendar = NSCalendar.currentCalendar()
        
        //判断时间
        if isThisYear(self){
            
            dt.dateFormat = "今年"
            
            if calendar.isDateInToday(self){
                //今天
                let result = -self.timeIntervalSinceNow
                
                if result < 60 {
                    return "刚刚"
                }else if result < 60 * 60 {
                    return "\(Int(result) / 60)分钟"
                }else {
                    return "\(Int(result) / (60 * 60))小时前"
                }
            }else if calendar.isDateInYesterday(self) {
                dt.dateFormat = "昨天 HH:mm"
            }else{
                dt.dateFormat = "MM-dd HH:mm"
            }
            
        }else{
            dt.dateFormat = "yyyy-MM-dd HH:mm"
        }
        return dt.stringFromDate(self)
    }
    
    //判断传入的date与当前时间是否是同一年
    private func isThisYear(date: NSDate) ->Bool {
        
        //取消当前时间
        let currentDate = NSDate()
        
        //比较是否是同一年
        let dt = NSDateFormatter()
        dt.dateFormat = "yyyy"
        dt.locale = NSLocale(localeIdentifier: "en_US")
        
        //取出当前时间与目标时间的年份字符串
        let dateStr = dt.stringFromDate(date)
        let currentDateStr = dt.stringFromDate(currentDate)
        
        //进入对比并返回结果
        return (dateStr as NSString).isEqualToString(currentDateStr)
        
    }
    
}



























